Настраиваем интеграцию между AMOCRM и 1С.
Работает она так: в AMOCRM есть типовой бесплатный виджет по выставлению счета в 1С,
виджет вызывает веб-приложение, веб-приложение работает с веб-сервисом 1С.
1С арендована в облаке SCloud.
Веб-приложение разместили на другом сервере с другим доменом. Веб-приложение (которое раньше было размещено на том же домене, что и веб-сервис) раньше работало.
При разноске на разные домены, запросы стали кросс-доменными – работать перестало. Валилось с ошибкой авторизации.
Я добавил после строки var req = new XMLHttpRequest(); строку req.withCredentials = true;
- и при обращении к веб-сервису выскочил запрос на пользователя и пароль.
Указал - первый запрос GET к веб-сервису перестал ругаться на авторизацию и начал выводить сообщение "Запрос из постороннего источника заблокирован: Политика одного источника запрещает чтение удаленного ресурса на
https://web01.scloud.ru/sc42237_base01/ws/amocrm. (Причина: отсутствует заголовок CORS 'Access-Control-Allow-Origin')".
Позвонил в тех.поддержку SCloud и попросил их настроить в IIS веб-сервер так, чтобы он отдавал заголовки 'Access-Control-Allow-Origin', 'Access-Control-Allow-Headers', 'Access-Control-Allow-Methods', 'Access-Control-Allow-Credentials'.
Появились заголовки - GET начал проходить на ура. Но следующим идет запрос POST и он валится с ошибкой авторизации и сообщением "Запрос из постороннего источника заблокирован: Политика одного источника запрещает чтение удаленного ресурса на
https://web01.scloud.ru/sc42237_base01/ws/amocrm. (Причина: неудача канала CORS preflight)."
Может кто-то сталкивался с подобной проблемой?